/**
 * use as java.util.HashSet
 */
function testHashSet() {
	alert("HashSet test begin:");
	try {
		var hashset=new HashSet();
		hashset.add(1);
		hashset.add(2);
		hashset.add(1);
		alert(hashset.size());
		hashset.clear();
		alert(hashset.size());
	} catch (e) {
		alert(e);
	}
	alert("HashSet test end");
}

//$(function (){
//    Array.prototype.contains = function (element) {  //利用Array的原型prototype点出一个我想要封装的方法名contains
//        for (var i = 0; i < this.length; i++) {
//            if (this[i] == element) {    //如果数组中某个元素和你想要测试的元素对象element相等，则证明数组中包含这个元素，返回true
//                return true;
//            }else{
//            	return false;
//            }
//        }
//    }
//});


function HashSet(){
	private:this.arr = new Array();

	public: this.size = size;
	function size() {
		return this.arr.length;
	}
	
	this.isEmpty = isEmpty;
	function isEmpty() {
		if(this.arr.length==0){
			return true;
		}else{
			return false;
		}
	}
	
	this.contains = contains;
	function contains(o) {
		 for (var i = 0; i <this.arr.length; i++) {
	            if (this.arr[i] == o) {    //如果数组中某个元素和你想要测试的元素对象element相等，则证明数组中包含这个元素，返回true
	            	return true;
	            }
	        }
	}

	this.add = add;
	function add(o) {
		if(!this.contains(o))
		return this.arr.push(o) == null;
	}
//	this.addAll = addAll;
	
//	function addAll(set) {
//		var mod = false;
//		for ( var it = set.iterator(); it.hasNext();) {
//			if (this.add(it.next()))
//				mod = true;
//		}
//		return mod;
//	}

//	this.remove = remove;
//	function remove(o) {
//		return this.map.remove(o).equals(this.ZERO);
//	}

	this.clear = clear;
	function clear() {
		this.arr=new Array();
	}

//	this.iterator = iterator;
//	function iterator() {
//		return new HashIterator(this.map.iterator());
//	}

//	this.equals = equals;
//	function equals(o) {
//		if (o.size() != this.size())
//			return false;
//		for ( var it = this.iterator(); it.hasNext();) {
//			if (!o.contains(it.next()))
//				return false;
//		}
//		return true;
//	}

//	this.hashCode = hashCode;
//	function hashCode() {
//		var h = 0;
//		for ( var it = this.iterator(); it.hasNext();) {
//			h += it.next().hashCode();
//		}
//		return h;
//	}

	this.toArray = toArray;
	function toArray() {
		return this.arr;
	}

}